The present invention generally relates to parse/build engines and more specifically to a high performance and yet very flexible parse/build engine capable of translating multi-format message streams into an internal message format for processing and translating the internal message format back to the multi-format message streams where formats that can be translated may be dynamically added to the parse/build engine.
Applications need to communicate with other heterogeneous systems when performing tasks. These heterogeneous systems may use data in a format that is different from the internal format of the host application. In order to be able to process information received in the different data format, the host-application may have to parse the external data format to its own internal data format. The host application can then process the parsed information in the internal data format. After processing, the processed information is then built into the external data format. Accordingly, the software application can then effectively communicate with external heterogeneous systems that process data in a different data format than the internal data format used by the software application.
Conventionally, parse/build engines are used for the parse and build steps described above. The engines are generally one of two types, interpreter-based parse/build engines and compiled parse/build engines.
Interpreter-based parse/build engines can handle multiple data formats. The interpreter-based parse/build engines include a large grammar dictionary that is used to interpret a certain set of messages. Accordingly, multiple data formats can be handled, but at the cost of performance because using the grammar dictionary is often very complex and translating messages using it degrades performance. Another drawback with the interpreter-based parse/build engines is they can only interpret the certain set of messages included in the grammar dictionary. If additional definitions in the grammar dictionary need to be added, the engine typically has to be recompiled in order to use the new definitions for the grammar dictionary.
Compiled parse/build engines are customized for high performance for a fixed set of data formats. But compiled parse/build engines cannot support new data formats dynamically. They require code changes to incorporate the new data formats that may be necessary to support new business requirements. The code changes must then be recompiled. Thus, compiled parse/build engines are not a good fit for systems that need to handle new message types dynamically and cannot be brought down for re-compiling.